using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SuperPolarity { class Widget { public IList Children; public Dictionary>> Listeners; public virtual void AppendChild(Widget widget) { Children.Add(widget); } public virtual void Bind(string eventName, Action eventListener) { List> newListenerList; List> listenerList; bool foundListeners; if (!Listeners.ContainsKey(eventName)) { newListenerList = new List>(); Listeners.Add(eventName, newListenerList); } foundListeners = Listeners.TryGetValue(eventName, out listenerList); listenerList.Add(eventListener); } public virtual void Unbind(string eventName, Action eventListener) { // NOT YET IMPLEMENTED; } public virtual void Dispatch(string eventName, float value) { List> listenerList; bool foundListeners; foundListeners = Listeners.TryGetValue(eventName, out listenerList); if (!foundListeners) { return; } foreach (Action method in listenerList) { method(value); } } } }